/*
 * Copyright (C) 2003, 2004 Rex Ford
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions and the following disclaimer in the documentation
 *    and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * DEVELOPERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

package GamePlay.GameObjects;
import GamePlay.GameEnv;
import java.awt.image.*;
import java.awt.*;
import GamePlay.Location;
import GamePlay.Collision.*;

public abstract class Interactor extends GameObject
{
	public int health = 100;
	private double mySpeed=.06;
	public Interactor(GameEnv env, Color myCol)
	{
		super(env);
		BufferedImage bi = new BufferedImage(24, 24,
				BufferedImage.TYPE_INT_ARGB);
		Graphics2D g = bi.createGraphics();
		g.setColor(mix(Color.BLACK,myCol));
		g.fillRect(0,0,24,24);
		g.setColor(myCol);
		g.fillRect(2,2,20,20);
		myImage = (Image)bi; //set this drawing as my image.
		
		
		int rand = (int)(Math.random()*900);
		myLoc=new Location(rand,0);
		
		//collision!
		int HEIGHT=myImage.getHeight(null);
		int WIDTH=myImage.getWidth(null);
		CollisionShape body = new CollisionRect(2,this,new Location(0,0),WIDTH,HEIGHT);
		this.addCollisionShape(body);
	}
	
	public void pulse(long millis) 
	{
		if(myLoc.getY()<730)
			myLoc.moveY(mySpeed*millis);
	}
	
	private Color mix(Color c1, Color c2) 
	{
		int r1 = c1.getRed();
		int g1 = c1.getGreen();
		int b1 = c1.getBlue();
		int r2 = c2.getRed();
		int g2 = c2.getGreen();
		int b2 = c2.getBlue();
		return new Color((r1 + r2) / 2, (g1 + g2) / 2, (b1 + b2) / 2);
	}
	
	

	public void collide(Object itsType)
	{
		if(itsType instanceof UserShip)
			removeMe();
		else if(itsType instanceof Bullet)
		{
			health -= ((Bullet)itsType).damage;
			if(health<1)
				removeMe();
		}
	}

}
